/**
 * 
 */
package br.com.beyondclick.model.dao.jpa;

import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.beyondclick.model.dao.PedidoDAO;
import br.com.beyondclick.model.entity.Pedido;
import br.com.gentech.commons.model.dao.DAOException;
import br.com.gentech.commons.model.dao.jpa.JpaBaseDAO;



/**
 * @author acdesouza
 *
 */
public class JpaPedidoDAO extends JpaBaseDAO<Pedido, Long> implements PedidoDAO{

	public JpaPedidoDAO(EntityManager manager) {
		super(manager);
	}

	@Override
	public Class<Pedido> getEntityClass() {
		return Pedido.class;
	}

	public void calcularValorTotal(Pedido pedido) throws DAOException {
		StringBuffer hql = new StringBuffer();
		hql.append("select sum(p.precoCompra), sum(p.precoVenda) ");
		hql.append("from PedidoMaterial p ");
		hql.append("where p.pedido = :pedido ");
		
		Query query = manager.createQuery(hql.toString());
		query.setParameter("pedido", pedido);
		
		Object [] totais = (Object[]) query.getSingleResult();
/*		
		pedido.setTotalCusto(((BigDecimal)totais[0]).doubleValue());
		pedido.setTotalPedido(((BigDecimal)totais[1]).doubleValue());
*/
	}

	@SuppressWarnings("unchecked")
	public List<Pedido> find(Date inicio, Date fim) {
		StringBuilder hql = new StringBuilder();
		hql.append("select c ");
		hql.append("from Pedido c ");
		hql.append("where c.data between :inicio and :fim ");
		
		Query query = manager.createQuery(hql.toString());
		query.setParameter("inicio", inicio);
		query.setParameter("fim", fim);
		
		Set<Pedido> pedidos = new LinkedHashSet<Pedido>(query.getResultList()); 
		return new ArrayList<Pedido>(pedidos);
	}

	
}
